Go训练营第十课问题收集
2021年11月4日 更新
开启更多功能,提升办公效能
  1. 类手机性能的嵌入ARM机器,MySQL建议使用哪个版本,MySQL 5.7还是MySQL 8.0?

CPU:quad-core Cortex-A53 1.8 GHz; Memory: 2GB LPDDR4;16GB eMMC NAND Flash

  1. 评论系统架构中的content表中的字段和注释有问题,请老师仔细校对一下全部表修复它,谢谢。
  1. 请问分页数据的缓存有没有比较推荐的姿势?比如分页的 key 怎么设计,结合页码的话每页数据可能是可变的。
  1. B站Go进程内缓存用什么库?自研的?
  1. 请问老师如何解耦两个微服务互相调用的问题?采用消息队列解耦么?(架构设计上解决吧)
  1. 单飞解决了一台机器内的大量回源问题,不同机器导致的回源问题在b站内部是如何处理的?可接受范围内不处理?还是类似于CDN的思路,找机器做中间层完成归并回源?这个可能更机器的数量有关,b站内评论系统用多少台机器?

  1. kratos的hook都是并行的关系,有没有存在hook之间有依赖的场景,比如必须先执行了hook1才能执行hook2?(app.append(hooh1然后hook2,slice的顺序应该能够保证吧
  1. 大部分业务逻辑都是每次都是先写redis缓存,然后定期写回mysql么
  1. cdn是缓存的静态页面吧,那前端页面被缓存了,但是前端请求api还需要回源到集群获取?
  1. 题目在下方图片里:

11.本地热点统计,是一定interval统计所有滑动窗口内的hashmap数据汇总,那几秒滑过的相当于丢弃了是么(回复:这个和具体业务相关,要看实际场景来判断窗口大小,而不是固定的值)

12.缓存和数据库一致性,不应该是先写MySQL,再淘汰缓存吗?既写MySQL又写缓存,在写并发时会有概率导致数据库和缓存不一致吧?(老师后面会有专门一节课将mysql与redis这个吧)(回复:”缓存和数据库一致性,不应该是先写MySQL,再淘汰缓存吗“--正确,是这样的!)

13.周四讲的,comment可以搞成一个中台服务,供很多大前端调用,这个中台的调用入口是comment BFF还是comment service?按理说应该是comment service做成中台吧?BFF毕竟是贴合前端的。如果是comment service,那敏感词过滤服务是否要下沉到comment serivce来调用?(回复:中台的调用接口应该是comment service,BFF是给前端服务的,敏感词服务可以下沉到comment serivce,这个也要看具体使用场景,一般来讲也可以做一个单独的微服务供其他服务使用。)


// 下面这些问题都和B站相关,非B站员工,还要麻烦毛剑老师来讲解一下。

14.b站token生成和验证是怎么做的?是单独的一个rpc服务还是本地通用的代码库中实现的?api网关、bff、单独的rpc服务都要一层层对token进行验证吗? (这个麻烦@毛剑 老师来回复了

15.b站用的什么api网关组件?自研的还是第三方的? (这个麻烦@毛剑 老师来回复了

16.b站所有服务的写mysql都是通过kafka进行串行写入的吗?还是会根据不同的pqs定制不同的方案?如果有比评论更大的写入流量,用kafka串行方案的话mysql写入数据的速度跟不上生产速度就会导致消息堆积(这个麻烦@毛剑 老师来回复了